In one approach of using automated test equipment to test an electronic device, such as an integrated circuit, various test instruments transmit data to the electronic device to stimulate the device. In response, the electronic device produces response data, which is monitored by the automated test equipment. The automated test equipment then compares this response data to reference responses to determine whether the electronic device is functioning as intended. Oftentimes, the data transmitted to the electronic device during testing as well as the reference responses are represented by a series of test vectors (where test vectors represent raw data delivered to pins of an electronic device during testing) included in one or more test patterns (the source code versions of these test patterns are referred to herein as “pattern sources”). A test pattern usually exists for testing each mode of operation of each module in the electronic device. Therefore, thousands of test patterns may be used, in different combinations, to test the various aspects of an electronic device.
Before loading a test pattern into the test equipment, the pattern source is compiled into object code, which the test equipment is configured to execute. When compiling a particular pattern source, the compiler assigns specific values or addresses to certain data in the pattern source (referred to herein as “shared resources”) that the test equipment is configured to recognize. As persons skilled in the art will understand, if two or more pattern sources are compiled independently of one another, then the compiler may assign the same value or address to two different shared resources that reside in different pattern sources. To avoid this problem, current systems implement one of two approaches when compiling and loading a combination of two or more test patterns used to implement a particular test on an electronic device.
The first approach entails individually compiling each test pattern and then, one test pattern at a time, loading a given compiled test pattern into the test equipment and executing that test pattern on the electronic device. A major drawback of this approach is that it does not allow multiple compiled test patterns to be loaded into the test equipment simultaneously and then executed. This approach is therefore quite time consuming.
The second approach entails creating a group of pattern sources and then compiling the group as a whole. This approach allows the compiler to compile the different pattern sources relative to one another so that the compiler does not assign the same value or address to any two different shared resources in the group of pattern sources. A major drawback of this approach is that the pattern sources need to be recompiled every time a new group of test patterns is created for testing purposes. Similarly, with this approach, every time a change is made to a particular test pattern, every group of pattern sources containing that test pattern must be recompiled. Recompiling groups of pattern sources is very inefficient. Further, the compiled test patterns cannot be stored as read-only files since the object code must be changed every time a new group is created or a change is made to a particular test pattern.